Virtual distributed shared memory that retains data that is divided and distributed among the actual memory of terminal apparatuses has been disclosed as a technique for sharing data among plural terminal apparatuses. The virtual distributed shared memory is used for example in grid computing that provides, as a single composite computer system, devices on a wide area network such as Internet.
Virtual distributed shared memory is characterized in that access is distributed, enabling network load to be reduced. Virtual distributed shared memory also allows application software (hereinafter, referred to as “app”) running on the terminal apparatuses to access the virtual distributed shared memory as a single continuous memory without being conscious of the virtual distributed shared memory. An app running on the terminal apparatuses assigns a thread to each of the terminal apparatuses to execute distributed processing and parallel processing. A program is executed in units of treads.
Disclosed as a technique relating to the virtual distributed shared memory is for example a technique that uses, as the virtual distributed shared memory, the memory of devices connected via a wired wide area network. Also disclosed as a wireless network example is a technique of virtualizing a send/receive buffer to relay data so that data can be communicated among terminal apparatuses that are not directly connected (see, for example, Japanese Laid-Open Patent Publication Nos. H6-19785 and 2005-94776).
In an information storage system using virtual distributed shared memory, information created by the user is stored as information elements with meaning. A technique is disclosed that, when an information acquisition request is issued from the terminal apparatuses, determines a master terminal apparatus to dynamically process the information acquisition request, for efficient exchange and duplication of information corresponding to the information acquisition request (see, for example, Japanese Laid-Open Patent Publication No. 2005-4474).
When executing plural distributed processing and parallel processing in the above conventional techniques, plural terminal apparatuses may execute the processing while performing synchronous processing. Synchronous processing is processing that interrupts processing for plural threads at a specified code position and continues the subsequent processes when all threads reach the specified code position. Terminal apparatuses executing interrupted threads wait for the synchronization. At this time, if the terminal apparatuses having threads assigned thereto have different performances or communication speeds, terminal apparatuses having higher performances or communication speeds have to wait for the synchronization for a longer period of time, resulting in drops in the overall performance of the system.